GDK GL context's should associate with "window->impl_window" not "window"
authorNiels Nesse <nnesse@sonic.net>
Sun, 18 Jan 2015 07:21:35 +0000 (23:21 -0800)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 28 Jan 2015 12:00:30 +0000 (12:00 +0000)
In some layouts this inconsistency results in crashes in
gdk_gl_texture_from_surface() since it uses gdk_gl_context_get_window() but
the returned window is not the same as the one that is being painted so
"window->current_paint.surface" is NULL. I saw this problem when packing a
GdkGLArea into a GtkPaned.

https://bugzilla.gnome.org/show_bug.cgi?id=743146

gdk/gdkwindow.c

index a3a2d64635c61c153faaa8b0678cbb5b3c9cdaa8..778fd5fc035a295659158345da8510c65d47c850 100644 (file)
@@ -2737,7 +2737,7 @@ gdk_window_get_paint_gl_context (GdkWindow *window, GError **error)
   if (window->impl_window->gl_paint_context == NULL)
     {
       window->impl_window->gl_paint_context =
-        GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,
+        GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window->impl_window,
                                                                      TRUE,
                                                                      GDK_GL_PROFILE_3_2_CORE,
                                                                      NULL,
@@ -2748,7 +2748,7 @@ gdk_window_get_paint_gl_context (GdkWindow *window, GError **error)
         {
           g_clear_error (error);
           window->impl_window->gl_paint_context =
-            GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,
+            GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window->impl_window,
                                                                          TRUE,
                                                                          GDK_GL_PROFILE_DEFAULT,
                                                                          NULL,
@@ -2790,7 +2790,7 @@ gdk_window_create_gl_context (GdkWindow    *window,
   if (paint_context == NULL)
     return NULL;
 
-  return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,
+  return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window->impl_window,
                                                                      FALSE,
                                                                       profile,
                                                                       paint_context,